When are Bytecodes Faster than Direct Execution?
نویسندگان
چکیده
We demonstrate the tradeoffs between interpreting code in compact forms (such as the bytecoded method formats used in Smalltalk and Java), and direct execution of code (as in dynamic-translation Smalltalk and just-in-time Java compilers). Experiments with the interpreted Smalltalk language show that the widely held belief that direct execution is always faster than compact interpretation is not correct. Specifically, it is untrue for memory architectures with high cache-miss penalties, where the larger volume of less frequently repeated instructions inherent in direct execution outweighs the reduction in the number of instructions executed. The experiments presented demonstrate that the space of cycle costs for different types of cache misses can be divided into regions where a particular option is faster, and that these regions differ for different cache configurations. This suggests that interpreter designers must consider memory architecture and language characteristics when deciding whether to use direct execution. This work has been supported in part by gifts from Sun Microsystems Laboratories. †Submission contact: Eliot Moss, Phone: (413) 545-4206, Fax: (413) 545-1249
منابع مشابه
Accelerating the parallel distributed execution of Java HPC applications
In order to speed up the execution of Java applications, JIT compilers compile method bytecodes into native code at run time. Once a method is compiled, subsequent executions of this method will run a generated machine-dependent code, which is generally faster than interpreting bytecodes. In addition, JIT compilers can apply several optimizations to the code to increase the performance even fur...
متن کاملA quantitative analysis of the performance impact of specialized bytecodes in java
Java is implemented by 201 bytecodes that serve the same purpose as assembler instructions while providing object-file platform independence. A collection of core bytecodes provide critical and independent functionality while a collection of specialized bytecodes is meant to improve on the performance of some of the core bytecodes. This study identifies 67 specialized bytecodes and shows the im...
متن کاملHardware compilation for high performance Java processors
High performance on Java applications running on server and desktop machines requires fast execution of Java bytecodes. Such performance can be achieved by Just-In-Time (JIT) compilers, which translate the stack-based bytecodes into register-based machine code on demand. But one crucial problem in Java JIT compilation is the compilation time, which increases the total execution time of an appli...
متن کاملA Verifier for Region-Annotated Java Bytecodes
This paper presents a verifier for the memory-safe execution of extended Java bytecodes that support region-based memory management and explicit deallocation primitives. The verifier reads in region-annotated bytecodes that augment the standard Java bytecodes with instructions for creating and removing memory regions, allocating objects in regions, and passing regions as parameters. The verific...
متن کاملA software/hardware cooperated stack operations folding model for Java processors
Java has become the most important language in the Internet area, but the execution performance of Java processors is severely limited by the true data dependency inherited from the stack architecture defined by Sun’s Java Virtual Machine. A sequential hardware-based folding algorithm––POC folding model was proposed in the earlier research to eliminate up to 80.1% of stack push and pop bytecode...
متن کاملذخیره در منابع من
با ذخیره ی این منبع در منابع من، دسترسی به آن را برای استفاده های بعدی آسان تر کنید
عنوان ژورنال:
دوره شماره
صفحات -
تاریخ انتشار 1997